/**
 * 
 */
package com.ordoict.smallsettlement.business.generic.service;
import java.util.List;

/**
 * <pre>
 * vCloud.biz.backOffice.service
 * GenericService.java
 * </pre>
 *
 * Desc: 최상위 서비스 인터페이스
 *       기본 CRUD 를 정의.
 *       모든 서비스 인터페이스는 GenericService<T> 상속 권장.
 * @Company  : OrdoICT.,Inc
 * @author   : Choi Jin Wook / choijinwook84@ordoict.com
 * @Date     : 2011. 8. 25. 오전 11:44:27
 * @Version  :
 *
 * @param <T>
 */
public interface GenericService<T> {
    
    /**
     * Desc: 조회
     * @Mehtod Name : get
     * @param entity
     * @return
     */
    T get(T entity);
    
    /**
     * Desc: 조회(리스트)
     * @Mehtod Name : getList
     * @param entity
     * @return
     */
    List<T> getList(T entity);
    
    /**
     * Desc: 카운트
     * @Mehtod Name : getCount
     * @param entity
     * @return
     */
    Integer getCount(T entity);

    /**
     * Desc: 등록
     * @Mehtod Name : add
     * @param entity
     * @return
     */
    T add(T entity);
    
    /**
     * Desc: 수정
     * @Mehtod Name : update
     * @param entity
     * @return
     */
    T update(T entity);
    
    /**
     * Desc: 삭제
     * @Mehtod Name : delete
     * @param entity
     */
    int delete(T entity);
    
    /**
     * Desc: Procedure, Package 실행
     * @Mehtod Name : get
     * @param entity
     * @return
     * @throws DataAccessException
     */
    T psm(T entity);
    
}